//-----------------------------------------------------------------------
//<copyright file="LuuKhoBLL.cs
//Code gen by tool.
//</copyright>
//-----------------------------------------------------------------------
using System;
using PMS.Exceptions;
using System.Collections.Generic;
using PMS.DAL;
using PMS.Entity;

namespace PMS.BLL
{
	public class LuuKhoBO : BaseBO
	{
		// Interface Instant Object
		private readonly ILuuKhoDAO luukhoInterfaceObject = null;

		// Constructor
		public LuuKhoBO()
		{
			luukhoInterfaceObject = new DAL.ServiceFactory<ILuuKhoDAO>().CurrentDAL;
		}

		#region LuuKho

		/// <summary>
		///
		/// </summary>
		/// <param name="luukho"></param>
		public LuuKho CreateLuuKho(LuuKho luukho)
		{
			try
			{
				return luukhoInterfaceObject.CreateLuuKho(luukho);
			}
			catch (Exception ex)
			{
				throw BusinessException.GetException("Business Access CreateLuuKho Exception", ex);
			}
		}

		/// <summary>
		///
		/// </summary>
		/// <param name="luukho"></param>
		public void UpdateLuuKho(LuuKho luukho)
		{
			try
			{
				luukhoInterfaceObject.UpdateLuuKho(luukho);
			}
			catch (Exception ex)
			{
				throw BusinessException.GetException("Business Access UpdateLuuKhoException", ex);
			}
		}

        /// <summary>
        ///
        /// </summary>
        /// <param name="luukho"></param>
        public void UpdateLuuKhoNhapKho(int maluukho, int soluong)
        {
            try
            {
                LuuKho lk = luukhoInterfaceObject.GetLuuKhoByID(maluukho);
                if (lk != null)
                {
                    lk.TonKho = lk.TonKho + soluong;
                    lk.TongNhap = lk.TongNhap + soluong;
                    luukhoInterfaceObject.UpdateLuuKho(lk);
                }
            }
            catch (Exception ex)
            {
                throw BusinessException.GetException("Business Access UpdateLuuKhoException", ex);
            }
        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="luukho"></param>
        public void UpdateLuuKhoXuatKho(int maluukho, int soluong)
        {
            try
            {
                LuuKho lk = luukhoInterfaceObject.GetLuuKhoByID(maluukho);
                if (lk != null)
                {
                    lk.TonKho = lk.TonKho - soluong;
                    lk.TongXuat = lk.TongXuat + soluong;
                    luukhoInterfaceObject.UpdateLuuKho(lk);
                }
            }
            catch (Exception ex)
            {
                throw BusinessException.GetException("Business Access UpdateLuuKhoException", ex);
            }
        }

		/// <summary>
		///
		/// </summary>
		/// <param name="luukho"></param>
		public void DeleteLuuKho(LuuKho luukho)
		{
			try
			{
				luukhoInterfaceObject.DeleteLuuKho(luukho);
			}
			catch (Exception ex)
			{
				throw BusinessException.GetException("Business Access DeleteLuuKhoException", ex);
			}
		}

		/// <summary>
		///
		/// </summary>
        public LuuKhos GetAllLuuKho(string makho, string mathuoc, string solo, int? min)
		{
			try
			{
                return luukhoInterfaceObject.GetAllLuuKho(makho,mathuoc,solo,min);
			}
			catch (Exception ex)
			{
				throw BusinessException.GetException("Business Access GetAllLuuKho Exception", ex);
			}
		}

		/// <summary>
		///
		/// </summary>
		/// <param name="maLuuKho"></param>
		public LuuKho GetLuuKhoByID(int maLuuKho)
		{
			try
			{
				return luukhoInterfaceObject.GetLuuKhoByID(maLuuKho);
			}
			catch (Exception ex)
			{
				throw BusinessException.GetException("Business Access GetLuuKhoBy ID Exception", ex);
			}
		}

        /// <summary>
        ///
        /// </summary>
        /// <param name="maLuuKho"></param>
        public LuuKho GetLuuKhoByMaThuocAndSoLoAndMaKHo(string mathuoc, string solo, string makho)
        {
            try
            {
                return luukhoInterfaceObject.GetLuuKhoByMaThuocAndSoLoAndMaKHo(mathuoc, solo, makho);
            }
            catch (Exception ex)
            {
                throw BusinessException.GetException("Business Access GetLuuKhoBy ID Exception", ex);
            }
        }

		#endregion
	}
}
